package controller

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"k8s-platform/service"
	"log"
	"net/http"
)

type daemonset struct {}

var Daemonset daemonset




//获取 daemonset 列表  支持过滤  分页  排序
func (d *daemonset) Getdaemonsets(c *gin.Context) {
	//处理入参 匿名结构体 用于定义入参 get请求为form格式 其他请求为json
	params := new(struct {
		FilterName string `form:"filter_name"`
		Namespace  string `form:"namespace"`
		Limit      int    `form:"limit"`
		Page       int    `form:"page"`
	})
	//form使用Bind方法  json使用ShouldBindJSON
	if err := c.Bind(params); err != nil {
		log.Printf("Bind绑定参数失败：%s", err)
		c.JSON(http.StatusInternalServerError, gin.H{
			"msg":  fmt.Sprintf("Bind绑定参数失败：%s", err),
			"data": nil,
		})
		return
	}
	data, err := service.Daemonset.GetDaemonsets(params.FilterName, params.Namespace, params.Limit, params.Page)
	if err != nil {
		c.JSON(http.StatusInternalServerError, gin.H{
			"msg":  err.Error(),
			"data": nil,
		})
		return
	}

	c.JSON(http.StatusOK, gin.H{
		"msg":  "get daemonset list success",
		"data": data,
	})
}

//获取 daemonset 详情
func (d *daemonset) GetDaemonDetail(c *gin.Context) {
	//处理入参 匿名结构体 用于定义入参 get请求为form格式 其他请求为json
	params := new(struct {
		DaemonName string `form:"daemon_name" binding:"required"`
		Namespace  string `form:"namespace" binding:"required"`
	})
	//form使用Bind方法  json使用ShouldBindJSON
	if err := c.Bind(params); err != nil {
		log.Printf("Bind绑定参数失败：%s", err)
		c.JSON(http.StatusInternalServerError, gin.H{
			"msg":  fmt.Sprintf("Bind绑定参数失败：%s", err),
			"data": nil,
		})
		return
	}

	data, err := service.Daemonset.GetDaemonDetail(params.DaemonName, params.Namespace)
	if err != nil {
		c.JSON(http.StatusInternalServerError, gin.H{
			"msg":  err.Error(),
			"data": nil,
		})
		return
	}

	c.JSON(http.StatusOK, gin.H{
		"msg":  "get daemonset detail success",
		"data": data,
	})
}

//删除 daemonset
func (d *daemonset) DelDaemonset(c *gin.Context) {
	//处理入参 匿名结构体 用于定义入参 get请求为form格式 其他请求为json
	params := new(struct {
		DaemonName string `json:"daemon_name" binding:"required"`
		Namespace  string `json:"namespace" binding:"required"`
	})
	//form使用Bind方法  json使用ShouldBindJSON
	if err := c.ShouldBindJSON(params); err != nil {
		log.Printf("Bind绑定参数失败：%s", err)
		c.JSON(http.StatusInternalServerError, gin.H{
			"msg":  fmt.Sprintf("Bind绑定参数失败：%s", err),
			"data": nil,
		})
		return
	}

	err := service.Daemonset.DelDaemonset(params.DaemonName, params.Namespace)
	if err != nil {
		c.JSON(http.StatusInternalServerError, gin.H{
			"msg":  err.Error(),
			"data": nil,
		})
		return
	}

	c.JSON(http.StatusOK, gin.H{
		"msg":  "delete daemonset success",
		"data": nil,
	})
}
